package it.orma.iridehr.validators;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import it.orma.iridehr.entities.EsperienzaLavorativa;

import org.apache.commons.lang3.StringUtils;
import org.springframework.binding.message.MessageBuilder;
import org.springframework.binding.message.MessageContext;
import org.springframework.binding.validation.ValidationContext;
import org.springframework.stereotype.Component;

@Component
public class EsperienzaLavorativaValidator  {
	
	public EsperienzaLavorativaValidator() {
	}
	
	/*
	 * 
	 * 
	 * Buongiorno Marco,
come stai?
ho riscontrato un nuovo problema nella compilazione del modulo candidati.
Pagina di compilazione: Esperienze lavorative. Quando compilo la pagina se mancano alcune informazioni non mi fa salvare il dato! 
I dati obbligatori da compilare sono data, azienda, luogo, provincia, retribuzione, mensilità. Tutte le altre sono da compilare a
 discrezione del candidato.
Attendo tue notifiche, grazie.
	 * */

	public void validate(EsperienzaLavorativa esperienzaLav, ValidationContext context) {
		MessageContext messages = context.getMessageContext();
		try {
			if(esperienzaLav.getDataDaStr()!=null&&!esperienzaLav.getDataDaStr().trim().equals("")){
				esperienzaLav.setDataDa(new SimpleDateFormat("dd/MM/yyyy").parse("01/"+esperienzaLav.getDataDaStr()));
			}else
				messages.addMessage(new MessageBuilder().error().source("dataDaStr")
						.code("error.campo.obbligatorio").build());
		} catch (ParseException e) {
			messages.addMessage(new MessageBuilder().error().source("dataDaStr")
					.code("error.campo.nonvalido").build());
		}
		
		try {
			if(esperienzaLav.getDataAStr()!=null&&!esperienzaLav.getDataAStr().trim().equals("")){
				esperienzaLav.setDataA(new SimpleDateFormat("dd/MM/yyyy").parse("01/"+esperienzaLav.getDataAStr()));
				if(esperienzaLav.getIncorso()!=null&&esperienzaLav.getIncorso().equals(true)){
					messages.addMessage(new MessageBuilder().error().source("dataAStr")
							.code("error.campo.nonvalido").build());
				}
			
			}
			else if (esperienzaLav.getDataAStr().trim().equals("")&&esperienzaLav.getIncorso()!=null&&esperienzaLav.getIncorso().equals(true)){
				esperienzaLav.setDataA(null);
			}
			else if(esperienzaLav.getIncorso()!=null&&esperienzaLav.getIncorso().equals(false)){
				messages.addMessage(new MessageBuilder().error().source("dataAStr")
						.code("error.campo.obbligatorio").build());
			}
		} catch (ParseException e) {
			messages.addMessage(new MessageBuilder().error().source("dataAStr")
					.code("error.campo.nonvalido").build());
		}
		
		if(StringUtils.isEmpty(esperienzaLav.getDataAStr())&&esperienzaLav.getIncorso()==null){
			messages.addMessage(new MessageBuilder().error().source("dataA")
					.code("error.campo.obbligatorio").build());
		}
		if(StringUtils.isEmpty(esperienzaLav.getComune())){
			messages.addMessage(new MessageBuilder().error().source("comune")
					.code("error.campo.obbligatorio").build());
		}
		if(StringUtils.isEmpty(esperienzaLav.getProvincia())){
			messages.addMessage(new MessageBuilder().error().source("provincia")
					.code("error.campo.obbligatorio").build());
		}
		//MP 2015.01.15
//		if(StringUtils.isEmpty(esperienzaLav.getMotivoCambiamento())){
//			messages.addMessage(new MessageBuilder().error().source("motivoCambiamento")
//					.code("error.campo.obbligatorio").build());
//		}
		if(StringUtils.isEmpty(esperienzaLav.getRetribuzioneMensile())){
			messages.addMessage(new MessageBuilder().error().source("retribuzioneMensile")
					.code("error.campo.obbligatorio").build());
		}
		//MP 2015.01.15
//		if(StringUtils.isEmpty(esperienzaLav.getDipendenzaDa())){
//			messages.addMessage(new MessageBuilder().error().source("dipendanzaDa")
//					.code("error.campo.obbligatorio").build());
//		}
//		if(StringUtils.isEmpty(esperienzaLav.getMansione())){
//			messages.addMessage(new MessageBuilder().error().source("mansione")
//					.code("error.campo.obbligatorio").build());
//		}
//		if(StringUtils.isEmpty(esperienzaLav.getQualifica())){
//			messages.addMessage(new MessageBuilder().error().source("qualifica")
//					.code("error.campo.obbligatorio").build());
//		}
		if(StringUtils.isEmpty(esperienzaLav.getMensilita())){
			messages.addMessage(new MessageBuilder().error().source("mensilita")
					.code("error.campo.obbligatorio").build());
		}
//		if(StringUtils.isEmpty(esperienzaLav.getSettore())){
//			messages.addMessage(new MessageBuilder().error().source("settore")
//					.code("error.campo.obbligatorio").build());
//		}
//		if(StringUtils.isEmpty(esperienzaLav.getReferente())){
//			messages.addMessage(new MessageBuilder().error().source("referente")
//					.code("error.campo.obbligatorio").build());
//		}
//		if(StringUtils.isEmpty(esperienzaLav.getNumPersonaleAzienda())){
//			messages.addMessage(new MessageBuilder().error().source("numPersonaleAzienda")
//					.code("error.campo.obbligatorio").build());
//		}
		
		
	}	

}
